// 加载分页模块
let laypage = layui.laypage;
let form = layui.form;

// 获取文章的参数
let data = {
  pagenum: 1, // 页码值，如2，将得到第2页数据
  pagesize: 2, // 每一页数据的数量，如5表示每页将会有5条数据
}
// ---------------------- 获取文章，渲染到页面中 ---------------------
function renderArticle() {
  $.ajax({
    url: '/my/article/list',
    data: data,
    success: function (res) {
      console.log(res)
      var html = template('tpl-list', res);
      $('tbody').html(html);
      // 最好，在这里，实现分页页码（通过layui的分页模块laypage）
      showPage(res.total);
    }
  });
}
renderArticle();

// ---------------------- 实现分页 ---------------------------------
function showPage(t) {
  // 执行一个laypage实例
  laypage.render({
    elem: 'page', // 注意，这里的 test1 是 ID，不用加 # 号
    count: t, // 数据总数，从服务端得到
    curr: data.pagenum, // 当前页码值
    limit: data.pagesize, // 表示每一页显示多少条数据(和ajax请求参数要一致)
    // prev: '上一篇'
    limits: [2, 3, 5, 10], // 设置每一页显示多少条数据
    layout: ['count', 'limit', 'prev', 'page', 'next', 'skip'], // 自定义排版  
    // jump是分页后的回调函数（实现分页的时候触发一次，后续点击页码的时候也会触发）
    jump: function (obj, first) {
      // obj包含了当前分页的所有参数，比如：
      // console.log(obj.curr); // 得到当前页，以便向服务端请求对应页的数据。
      // console.log(obj.limit); // 得到每页显示的条数
      // console.log(first); // 第一次实现分页的时候first=true; 后续切换页码的时候 first=undefined

      // 首次不执行
      if (first === undefined) {
        //do something
        data.pagenum = obj.curr; // 点击页码之后，改变ajax请求参数，然后重新获取数据
        data.pagesize = obj.limit;
        renderArticle();
      }
    }
  });
}


// ---------------------- 获取下拉框的分类 --------------------------
$.ajax({
  url: '/my/category/list',
  success: function (res) {
    // console.log(res)
    let html = template('tpl-category', res);
    $('#category').html(html);
    // 动态生成的下拉框，必须要更新渲染
    form.render('select');
  }
});


// ---------------------------- 实现筛选 ---------------------------
$('#search').on('submit', function (e) {
  e.preventDefault();
  // 获取用户选择的分类和状态
  let cate_id = $('#category').val(); // 获取到的是分类id
  let state = $('#state').val(); // 得到的是 “已发布” 或者 “草稿”
  // 修改ajax请求参数
  cate_id ? data.cate_id = cate_id : delete data.cate_id;
  state ? data.state = state : delete data.state;
  // 筛选的时候，要重置页码为 1
  data.pagenum = 1;
  // 重新调用 renderArticle更新数据即可
  renderArticle();
});

// ---------------------- 编写过滤器函数处理时间 ----------------------
function addZero(n) {
  return n < 10 ? '0' + n : n;
}
template.defaults.imports.dateFormat = function (t) {
  // 1. 实例化 Date 对象
  // let date = new Date(t1);
  let date = new Date(t);
  // console.log(date);
  let y = date.getFullYear();
  let m = addZero(date.getMonth() + 1);
  let d = addZero(date.getDate());
  let h = addZero(date.getHours());
  let i = addZero(date.getMinutes());
  let s = addZero(date.getSeconds());
  // console.log(y + '-' + m + '-' + d + ' ' + h + ':' + i + ':' + s)
  return y + '-' + m + '-' + d + ' ' + h + ':' + i + ':' + s;
}



// ---------------------- 删除文章 ----------------------
$('tbody').on('click', 'button:contains("删除")', function () {
  let id = $(this).data('id');
  // console.log(id);
  layer.confirm('确定要删吗？', function (index) {
    // 按照接口文档，调用接口，完成删除
    $.ajax({
      // url: '/my/article/delete/文章id',
      url: '/my/article/delete/' + id,
      success: function (res) {
        layer.msg(res.message);
        if (res.status === 0) {
          renderArticle();
        }
      }
    });
    // 关闭弹层
    layer.close(index);
  });
})